package com.hb.trans.mvp.presenter

import androidx.lifecycle.Lifecycle
import androidx.lifecycle.OnLifecycleEvent
import com.basiclib.base.BasePresenter
import com.basiclib.lifecycle.RxLifecycleUtils
import com.basiclib.network.RetryWithDelay
import com.basiclib.network.RxErrorHandler
import com.hb.trans.bean.ArticleLabel
import com.hb.trans.bean.Base
import com.hb.trans.global.ErrorHandleSubscriber
import com.hb.trans.mvp.contract.NewsContract
import com.hb.trans.mvp.model.NewsModel
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import javax.inject.Inject

class NewsPresenter @Inject constructor(model: NewsModel, var errorHandler: RxErrorHandler) :
    BasePresenter<NewsContract.View, NewsContract.Model>(model) {

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun getNewsLabel() {
        mModel.getArticleLabel()
            .subscribeOn(Schedulers.io())
            .retryWhen(RetryWithDelay())
            .observeOn(AndroidSchedulers.mainThread())
            .compose(RxLifecycleUtils.bindToLifecycle(mRootView!!))
            .subscribe(object : ErrorHandleSubscriber<Base<MutableList<ArticleLabel>>>(errorHandler) {
                override fun next(r: Base<MutableList<ArticleLabel>>) {
                    if (r.code == 1) {
                        mRootView?.setupData(r.data)
                    } else {
                        mRootView?.showShortToast(r.info ?: "")
                    }
                }
            })
    }
}